// 图片上传类
define([
  "uploader", 
  "style!webuploader"
], function(WebUploader) {
  function webUploaderFn(ops, callfn) {
    var defaultOps = {
      auto: false, // 选完文件后，是否自动上传
      swf: 'js/Uploader.swf', // swf文件路径
      // server: 'upload.php', // 文件接收服务端
      // pick: '#imgPicker', // 选择文件的按钮。可选
      // 只允许选择图片文件。
      pick: {
        id: '#imgPicker', // id
        multiple: true // false  单选 
      },
      //fileNumLimit: 1,
      accept: {
        title: 'Images',
        extensions: 'gif,jpg,jpeg,bmp,png',
        mimeTypes: 'image/jpg,image/jpeg,image/png'   //修改这行
      },
      thumb: {
        width: 468,
        height: 396,
        type: ''
      }
    };

    if (ops) {
      $.extend(defaultOps, ops);
    }

    var uploader = WebUploader.create(defaultOps);

    uploader.on('beforeFileQueued', function(file) {
      //cropperFn($("#"+file.id));
    });

    uploader.on('fileQueued', function(file) {
      var $list = $("#fileList"),
        $li = $(
          '<div id="' + file.id + '" class="file-item thumbnail">' +
            '<form action="" id="form_upload" method="post" enctype="multipart/form-data">'+
              '<div style="max-width:468px;max-height:396px;overflow:hidden">' +
                '<img width="100%">' +
              '</div>'+
            '</form>'+
          //'<div class="info">' + file.name + '</div>' +
          '</div>'
        ),
        $img = $li.find('img');


      // $list为容器jQuery实例
      $list.html($li);

      // 创建缩略图
      uploader.makeThumb(file, function(error, src) {
        if (error) {
          $img.replaceWith('<span>不能预览</span>');
          return;
        }

        $img.attr('src', src);
        callfn && callfn($img);
      }, 1, 1); //100x100为缩略图尺寸

    });
    // 文件上传过程中创建进度条实时显示。
    uploader.on('uploadProgress', function(file, percentage) {
      var $li = $('#' + file.id),
        $percent = $li.find('.progress span');

      // 避免重复创建
      if (!$percent.length) {
        $percent = $('<p class="progress"><span></span></p>')
          .appendTo($li)
          .find('span');
      }

      $percent.css('width', percentage * 100 + '%');
    });

    // 文件上传成功，给item添加成功class, 用样式标记上传成功。
    uploader.on('uploadSuccess', function(file, res) {
      console.log(res.filePath); //这里可以得到上传后的文件路径
      $('#' + file.id).addClass('upload-state-done');
    });

    // 文件上传失败，显示上传出错。
    uploader.on('uploadError', function(file) {
      var $li = $('#' + file.id),
        $error = $li.find('div.error');

      // 避免重复创建
      if (!$error.length) {
        $error = $('<div class="error"></div>').appendTo($li);
      }

      $error.text('上传失败');
    });

    // 完成上传完了，成功或者失败，先删除进度条。
    uploader.on('uploadComplete', function(file) {
      $('#' + file.id).find('.progress').remove();
    });

    return uploader;
  }
  
  return webUploaderFn;
});